Simpel Neuraal netwerk: Hidden layer


Je hebt waarschijnlijk gemerkt in de vorige opdracht dat de spiraal dataset niet lukt met de beschikbare middelen. Het patroon is te complex. We gaan nu gebruik maken van zogenaamde "hidden layers". Dit zijn extra lagen tussen de input en output. Deze lagen zijn onzichtbaar voor de buitenwereld. Om te begrijpen wat hier het nut van is moeten we eerst iets beter begrijpen wat het neurale netwerk precies doet zonder die extra lagen. 

Iedere keer dat een punt wordt geclassificeerd wordt er een lineaire combinatie van input gebruikt. Iedere input (I) heeft zijn eigen weight(w) die uitgebeeld wordt door de lijntjes. Dat gaat als volgt:

output = w1*I1 + w2*I+ w3*I+ w4*I+ w5*I+ w6*I+ w7*I+ een constante

Wat we nu gaan doen is deze formule niet rechtstreeks naar de output sturen, maar naar een hidden neuron, dan krijgen we:

hidden neuron =  w1*I+ w2*I+ w3*I+ w4*I+ w5*I+ w6*I+ w7*I+ een constante

We doen dit niet één keer, maar meerdere keren, voor meerdere neuronen. Ieder neuron gebruikt dus deze formule. Daarna maken we een lineaire combinatie met de waarde van elk neuron (n) die naar de output gaat:

output = w1*n+ w2*n+ w3*n+ w4*n+ w5*n+ w6*n+ w7*n+ een constante

Dit neemt aan dat we maar één hidden layer hebben. Je kunt je voorstellen dat je op deze manier hele complexe patronen kunt maken en dat je ook veel meer weights hebt die je moet trainen. 

Opdracht

Probeer nu opnieuw de spiraal te classificeren. Beantwoord daarbij de volgende vragen. 

  1. Wat is het minimale aantal hidden layers dat je nodig hebt voor een correcte classificatie?
  2. Hoeveel neuronen gebruik je dan per hidden layer?
  3. Welke input heb je minimaal nodig om dit voor elkaar te krijgen (experimenteer hiermee).
  4. Wat is het gevolg als je meer hidden layers gebruikt dan je nodig hebt?